<?php
/**
 * Classe que representa o objeto Evento
 * @name Evento
 * @author Fabio Baía baiacfabio@gmail.com
 * @since 24/04/2013 20:13:19
 */
class Evento{
	private $id;
	private $nome;
	private $descricao;
	private $inicio;
	private $termino;
	private $inicioInscricao;
	private $terminoInscricao;
	private $valorUnico;
	private $valor;
	private $foto;
	private $certificadoUnico;
	private $dataModificacao;
	
	private $participantes = null;
	private $palestrantes = null;
	private $atividades = null;
	private $inscricoes = null;

	public function Evento(){
		$this->nome = "";
		$this->descricao = "";
		$this->inicio = "";
		$this->termino = "";
		$this->inicioInscricao = "";
		$this->terminoInscricao = "";
		$this->valorUnico = 0;
		$this->valor = "";
		$this->foto = "";
		$this->certificadoUnico = 0;
		$this->dataModificacao = new DateTime("now");

		$this->participantes = array();
		$this->palestrantes = array();
		$this->inscricoes = array();
		$this->atividades = array();
	}
		
	/**
	 * @access public
	 * @name setId
	 * @param int $id Id do Evento
	 * @since 24/04/2013 20:18:26
	 */
	public function setId($id) {
		$this->id = $id;
	}

	/**
	 * @access public
	 * @name getId
	 * @return int Id do Evento
	 * @since 24/04/2013 20:19:19
	 */
	public function getId() {
		return $this->id;
	}

	/**
	 * @access public
	 * @name setNome
	 * @param string $nome Nome do Evento
	 * @since 24/04/2013 20:21:31
	 */
	public function setNome($nome) {
		$this->nome = $nome;
	}

	/**
	 * @access public
	 * @name getNome
	 * @return string Nome do Evento
	 * @since 24/04/2013 20:22:33
	 */
	public function getNome() {
		return stripcslashes( $this->nome );
	}

	/**
	 * @access public
	 * @name setDescricao
	 * @param string $descricao Descri��o do Evento
	 * @since 24/04/2013 20:23:44
	 */
	public function setDescricao($descricao) {
		$this->descricao = $descricao;
	}

	/**
	 * @access public
	 * @name getDescricao
	 * @return string Descrição do Evento
	 * @since 24/04/2013 20:24:42
	 */
	public function getDescricao() {
		return stripcslashes( $this->descricao );
	}

	/**
	 * @access public
	 * @name setInicio
	 * @param DateTime $inicio data de Inicio do Evento
	 * @since 24/04/2013 20:38:29
	 */
	public function setInicio($inicio) {
		$this->inicio = $inicio;
	}

	/**
	 * @access public
	 * @name getInicio
	 * @return DateTime Data de Inicio do Evento
	 * @since 24/04/2013 20:41:18
	 */
	public function getInicio() {
		return $this->inicio;
	}

	/**
	 * @access public
	 * @name setTermino
	 * @param DateTime $termino Data de Termino do Evento
	 * @since 24/04/2013 20:43:42
	 */
	public function setTermino($termino) {
		$this->termino = $termino;
	}

	/**
	 * @access public
	 * @name getTermino
	 * @return DateTime Data de Termino do Evento
	 * @since 24/04/2013 20:50:52
	 */
	public function getTermino() {
		return $this->termino;
	}

	/**
	 * @access public
	 * @name setInicioInscricao
	 * @param DateTime $inicioInscricao Data de Inicio das Inscrições
	 * @since 24/04/2013 20:52:02
	 */
	public function setInicioInscricao($inicioInscricao) {
		$this->inicioInscricao = $inicioInscricao;
	}

	/**
	 * @access public
	 * @name getInicioInscricao
	 * @return DateTime Data de Inicio das Inscrições
	 * @since 24/04/2013 20:53:41
	 */
	public function getInicioInscricao() {
		return $this->inicioInscricao;
	}

	/**
	 * @access public
	 * @name setTerminoInscricao
	 * @param DateTime $terminoInscricao Data de Termino das Inscrições
	 * @since 24/04/2013 20:52:02
	 */
	public function setTerminoInscricao($terminoInscricao) {
		$this->terminoInscricao = $terminoInscricao;
	}

	/**
	 * @access public
	 * @name getTerminoInscricao
	 * @return DateTime Data de Termino das Inscrições
	 * @since 24/04/2013 20:53:41
	 */
	public function getTerminoInscricao() {
		return $this->terminoInscricao;
	}

	/**
	 * @access public
	 * @name setValorUnico
	 * @param boolean $valorUnico Se verdadeiro define que o evento todo terá um único valor
	 * @since 24/04/2013 20:55:47
	 */
	public function setValorUnico($valorUnico) {
		$this->valorUnico = $valorUnico;
	}

	/**
	 * @access public
	 * @name isValorUnico
	 * @return boolean Se verdadeiro define que o evento todo terá um único valor
	 * @since 24/04/2013 20:58:35
	 */
	public function isValorUnico() {
		return $this->valorUnico;
	}

	/**
	 * @access public
	 * @name setValor
	 * @param double $valor Valor do Evento quando isValorUnico() == true
	 * @since 24/04/2013 21:00:13
	 */
	public function setValor($valor) {
		$this->valor = $valor;
	}

	/**
	 * @access public
	 * @name getValor
	 * @return double Valor do Evento quando isValorUnico() == true
	 * @since 24/04/2013 21:02:23
	 */
	public function getValor() {
		return $this->valor;
	}

	/**
	 * @access public
	 * @name setCertificadoUnico
	 * @param boolean $certificadoUnico Se verdadeiro define que o evento todo ter� apenas um certificado
	 * @since 24/04/2013 21:12:06
	 */
	public function setCertificadoUnico($certificadoUnico) {
		$this->certificadoUnico = $certificadoUnico;
	}

	/**
	 * @access public
	 * @name isCertificadoUnico
	 * @return boolean Se verdadeiro define que o evento todo ter� apenas um certificado
	 * @since 24/04/2013 21:13:48
	 */
	public function isCertificadoUnico() {
		return $this->certificadoUnico;
	}

	/**
	 * @access public
	 * @name setDataModificacao
	 * @param DateTime $data Data de modificação
	 * @since 24/04/2013 21:17:19
	 */
	public function setDataModificacao($dataModificacao){
		$this->dataModificacao = $dataModificacao;
	}

	/**
	 * @access public
	 * @name getDataModifição
	 * @return DateTime Data de modificação
	 * @since 24/04/2013 21:18:10
	 */
	public function getDataModificacao(){
		return $this->dataModificacao;
	}

	/**
	 * @access public
	 * @name addPalestrante
	 * @param $palestrante
	 * @since 06/05/2013 15:30:02
	 */
	public function addPalestrante($palestrante) {
		//$palestrante->addEvento($this);
		/*if(!$this->palestrantes->contains($palestrante)){
			$this->palestrantes[] = $palestrante;
		}*/
		
		if(!in_array($palestrante, $this->palestrantes)){
			$this->palestrantes[] = $palestrante;
		}
	}

	/**
	 * @access public
	 * @name getPalestrantes
	 * @return array Palestrantes
	 * @since 06/05/2013 15:31:27
	 */
	public function getPalestrantes() {
		return $this->palestrantes;
	}

	/**
	 * @access public
	 * @name addInscricao
	 * @param Inscricao $inscricao
	 * @since 06/05/2013 17:26:29
	 */
	public function addInscricao($inscricao) {
		$inscricao->setEvento($this);
		if(!$this->inscricoes->contains($inscricao)){
			$this->inscricoes[] = $inscricao;
		}
	}

	/**
	 * @access public
	 * @name getInscricoes
	 * @return array Inscricoes
	 * @since 06/05/2013 17:27:06
	 */
	public function getInscricoes() {
		return $this->inscricoes;
	}

	/**
	 * @access public
	 * @name addAtividade
	 * @param Atividade $atividade
	 * @since 07/05/2013 20:36:52
	 */
	public function addAtividade($atividade) {
		$atividade->setEvento($this);
		if(!$this->atividades->contains($atividade)){
			$this->atividades[] = $atividade;
		}
	}

	/**
	 * @access public
	 * @name getAtividades
	 * @return array Atividades
	 * @since 07/05/2013 20:38:26
	 */
	public function getAtividades() {
		return $this->atividades;
	}

	/**
	 * @access public
	 * @name setFoto
	 * @param string $foto Nome da imagem da Arte
	 * @since 07/05/2013 22:36:53
	 */
	public function setFoto($foto) {
		$this->foto = $foto;
	}

	/**
	 * @access public
	 * @name getFoto
	 * @return string Nome da imagem da Arte
	 * @since 07/05/2013 22:37:30
	 */
	public function getFoto() {
		return $this->foto;
	}

}